package com.lagou.job;


import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import java.io.IOException;

/**
 * @description: IntSortDriver
 * @author: yequn
 * @create: 2021-05-05 14:46
 **/
public class IntSortDriver {
    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
//        1. 获取配置文件对象，获取job对象实例
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf, "IntSortDriver");
//        2. 指定程序jar的本地路径
        job.setJarByClass(IntSortDriver.class);
//        3. 指定Mapper/Reducer类
        job.setMapperClass(IntSortMapper.class);
        job.setReducerClass(IntSortReducer.class);
//        4. 指定Mapper输出的kv数据类型
        job.setMapOutputKeyClass(IntWritable.class);
        job.setMapOutputValueClass(NullWritable.class);
//        5. 指定最终输出的kv数据类型
        job.setOutputKeyClass(IntWritable.class);
        job.setOutputValueClass(IntWritable.class);
//        6. 设置reduce的数量为1
        job.setNumReduceTasks(1);
//        7. 指定job处理的原始数据路径
        FileInputFormat.setInputPaths(job,new Path(args[0]));
//        8. 指定job输出结果路径
        FileOutputFormat.setOutputPath(job,new Path(args[1]));
//        9. 提交作业
        boolean flag = job.waitForCompletion(true);
        // 错误输出只要是非零的即可
        System.exit(flag ? 0 : 1);
    }
}
